<script setup lang="ts">
import { getDoctorPage } from '@/services/consult'
import type { DoctorList } from '@/types/consult'
import { ref, onMounted } from 'vue'
import DoctorCard from './DoctorCard.vue'
// import { useWindowSize } from '@/composable'
import { useWindowSize } from '@vueuse/core'

/**
 * 150 针对的屏幕 375
 * 150    ??(求滑块宽度)                  300
 * ---- = -----               =        ---------
 * 375    屏幕宽度(可用api获取)            750
 *
 * 屏幕宽度是window.innerWidth
 * ？？滑块宽度 = 150 / 375 * 屏幕宽度
 * 监听屏幕宽度变化，计算滑块宽度
 * window.addEventListener('resize', () => {})
 */

const { width } = useWindowSize()
const list = ref<DoctorList>()
const loadData = async () => {
  const res = await getDoctorPage({ current: 1, pageSize: 5 })
  list.value = res.data.rows
}
onMounted(() => loadData())
</script>

<template>
  <div class="follow-doctor">
    <div className="head">
      <p>推荐关注</p>
      <a href="javascript:;"> 查看更多<i class="van-icon van-icon-arrow" /></a>
    </div>
    <div class="body">
      <!-- swipe 组件 -->
      <!-- 1. 不要指示器 show-indicators	是否显示指示器  不显示就是false
        2. 最后一张不能直接到第一张 loop	是否开启循环播放 false不开启
        3. 滑块宽度设置 width	滑块宽度，单位为 px 通过盒子模型可以计算 150

        width 150 是添加在行内样式 所以不会转成vw 就会有适配问题
        ？？滑块宽度 = 150 / 375 * 屏幕宽度 -->
      <van-swipe
        :width="(150 / 375) * width"
        :showIndicators="false"
        :loop="false"
        class="my-wipe"
      >
        <van-swipe-item v-for="item in list" :key="item.id">
          <doctor-card :item="item"></doctor-card>
        </van-swipe-item>
      </van-swipe>
    </div>
  </div>
</template>

<style lang="scss" scoped>
.follow-doctor {
  background-color: var(--cp-bg);
  height: 250px;

  .head {
    display: flex;
    justify-content: space-between;
    height: 45px;
    align-items: center;
    padding: 0 15px;
    font-size: 13px;

    > a {
      color: var(--cp-tip);
    }
  }

  .body {
    width: 100%;
    overflow: hidden;
  }
}
</style>
